/**
 * Copyright(c) 2014 Xunton Solutions
 *
 * History:
 *   15-1-26 下午6:03 Created by dwzhang
 */
package com.jade.modules.cms;

import java.util.List;

import com.jade.framework.base.criterion.Criteria;

/**
 * 内容计数管理。
 *
 * @author <a href="mailto:dwzhang@xunton.com">dwzhang</a> 
 * @version 1.0 15-1-26 下午6:03
 */
public interface ContentCountManager
{
    /**
     *  获取内容计数，不包括cache中还未更新到数据库中的数量。
     *
     * @param entityType 实体类型
     * @param entityId 实体标识
     * @return 内容计数
     */
    public ContentCount getCount(String entityType, long entityId);

    /**
     * 获取内容某一类型的数量。
     *
     * @param entityType 实体类型
     * @param entityId 实体标识
     * @param type 类型
     * @return 数量。
     */
    public long getCount(String entityType, long entityId, String type);

//    /*
//     * 获取所有类型的数量，包括Cache中的数量。
//     */
//    public ContentCount getCachedCount(String entityType, long entityId);

    /**
     * 增加某一类型的数量。
     *
     * @param entityType 实体类型
     * @param entityId 实体标识
     * @param type 类型
     * @param count 增加的数量，count为负数时是减少
     * @throws CmsException 异常
     */
    public void addCount(String entityType, long entityId, String type, long count)
            throws CmsException;

    /*
     * 查询内容数量，不包括cache中的数量.
     */
    public List<ContentCount> listCount(Criteria criteria);
}
